from itertools import permutations
from functools import reduce
from math import gcd
from math import factorial
t = int(input())
for _ in range(t):
n = int(input())
if (n % 2) == 1:
print (0)
else:
res = factorial(n // 2)
res = (res*res) % 998244353
print(res)
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef long long ll ;
typedef vector<ll> vl;
typedef vector<vector<ll>> vvl;
#define speed cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
/* Abbrevations */
#define ff first
#define ss second
#define mp make_pair
#define line cout<<endl;
#define pb push_back
// Some print
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
// sort
#define all(V) (V).begin(),(V).end()
#define srt(V) sort(all(V))
#define srtGreat(V) sort(all(V),greater<ll>())
// some extra
#define printv(v) for(ll i=0;i<ll(v.size());i++){cout<<v[i]<<" ";} line;
#define precision(x) cout<<fixed<<setprecision(x);
#define sz(V) ll(V.size())
// datatype definination
#define ordered_set tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update>
class Codeforces{
private:
// read only variable
const ll INF=1e18;
const ll mod1=1e9+7;
const ll mod2=998244353;
public:
Codeforces(){
}
ll power(ll x,ll y){
ll result=1;
while(y>0){
if(y&1){
result*=x;
}
y>>=1;
x*=x;
}
return result;
}
ll power(ll x,ll y,ll mod){
ll result=1;
x%=mod;
while(y>0){
if(y&1){
result*=x;
result%=mod;
}
y>>=1;
x*=x;
x%=mod;
}
return result;
}
ll str_to_num(string s){
stringstream pk(s);
ll num;
pk>>num;
return num;
}
string num_to_str(ll num){
return to_string(num);
}
// Techniques :
// divide into cases, brute force, pattern finding
// sort, greedy, binary search, two pointer
// transform into graph
// Experience :
// Cp is nothing but only observation and mathematics.
ll solve(){
ll n;
cin>>n;
if(n&1){
cout<<0<<endl;
return 0;
}
ll pro=1;
for(ll i=1;i<=n/2;i++){
pro*=i;
pro%=this->mod2;
}
pro=(pro*pro)%this->mod2;
cout<<pro<<endl;
return 0;
}
};
/* --------------------MAIN PROGRAM----------------------------*/
int main()
{
speed;
/* #ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif */
ll TestCase=1;
cin>>TestCase;
while(TestCase--){
Codeforces cf;
cf.solve();
}
}
/* -----------------END OF PROGRAM --------------------*/
/*
* stuff you should look before submission
* constraint and time limit
* int overflow
* special test case (n=0||n=1||n=2)
* don't get stuck on one approach if you get wrong answer
*/
1490E - Accidental Victory | 1335A - Candies and Two Sisters |
96B - Lucky Numbers (easy) | 1151B - Dima and a Bad XOR |
1435B - A New Technique | 1633A - Div 7 |
268A - Games | 1062B - Math |
1294C - Product of Three Numbers | 749A - Bachgold Problem |
1486B - Eastern Exhibition | 1363A - Odd Selection |
131B - Opposites Attract | 490C - Hacking Cypher |
158B - Taxi | 41C - Email address |
1373D - Maximum Sum on Even Positions | 1574C - Slay the Dragon |
621A - Wet Shark and Odd and Even | 1395A - Boboniu Likes to Color Balls |
1637C - Andrew and Stones | 1334B - Middle Class |
260C - Balls and Boxes | 1554A - Cherry |
11B - Jumping Jack | 716A - Crazy Computer |
644A - Parliament of Berland | 1657C - Bracket Sequence Deletion |
1657B - XY Sequence | 1009A - Game Shopping |